http2: Fix issue where slow requests are terminated prematurely#879
http2: Fix issue where slow requests are terminated prematurely#879hyperair wants to merge 4 commits intogoogleapis:mainfrom
Conversation
Use `session.setTimeout` instead of `setTimeout` for the idle shutdown timer. Fixes: googleapis#768
FakeClient now needs a setTimeout function
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
|
/gcbrun |
sofisl
left a comment
There was a problem hiding this comment.
Actually, could we add a test to specifically make sure test errors are not swallowed prematurely (per your issue description)? TY!
|
So sorry, I'm going to close this for now since we are in the middle of migrating this repo to google-cloud-node. would you mind reopening this PR on that repo when the migration is finished (probably next week) and just add a test as described above? TYSM! |
|
Sure, could you drop me a ping on this issue when the migration's done please? |
This PR fixes an issue where http2 requests taking longer than 500ms will be terminated prematurely, with
http2.requestsilently resolving with truncated responses instead of rejecting with an error.The issue comes from starting the idle shutdown timer (500ms) immediately after the beginning of the latest request on the session, and not detecting that the session is still actively transferring data before forcefully terminating the session.
This PR fixes that by switching the connection idle shutdown timer to
session.setTimeoutinstead ofsetTimeout.I've also verified that this fix makes the client in https://github.com/hyperair/google-http2-bug-demo work correctly (more info here):
Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
Fixes #768 🦕